home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / C / Applications / Portable Patmos / usr / include / rpcsvc / klm_prot.x < prev    next >
Encoding:
Text File  |  1994-11-08  |  3.6 KB  |  139 lines  |  [TEXT/R*ch]

  1. /*
  2.  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
  3.  * unrestricted use provided that this legend is included on all tape
  4.  * media and as a part of the software program in whole or part.  Users
  5.  * may copy or modify Sun RPC without charge, but are not authorized
  6.  * to license or distribute it to anyone else except as part of a product or
  7.  * program developed by the user.
  8.  * 
  9.  * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
  10.  * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
  11.  * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
  12.  * 
  13.  * Sun RPC is provided with no support and without any obligation on the
  14.  * part of Sun Microsystems, Inc. to assist in its use, correction,
  15.  * modification or enhancement.
  16.  * 
  17.  * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
  18.  * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
  19.  * OR ANY PART THEREOF.
  20.  * 
  21.  * In no event will Sun Microsystems, Inc. be liable for any lost revenue
  22.  * or profits or other special, indirect and consequential damages, even if
  23.  * Sun has been advised of the possibility of such damages.
  24.  * 
  25.  * Sun Microsystems, Inc.
  26.  * 2550 Garcia Avenue
  27.  * Mountain View, California  94043
  28.  */
  29.  
  30. /*
  31.  * Kernel/lock manager protocol definition
  32.  * Copyright (C) 1986 Sun Microsystems, Inc.
  33.  *
  34.  * protocol used between the UNIX kernel (the "client") and the
  35.  * local lock manager.  The local lock manager is a deamon running
  36.  * above the kernel.
  37.  */
  38.  
  39. #ifndef RPC_HDR
  40. %#ifndef lint
  41. %/*static char sccsid[] = "from: @(#)klm_prot.x 1.7 87/07/08 Copyr 1987 Sun Micro";*/
  42. %/*static char sccsid[] = "from: @(#)klm_prot.x    2.1 88/08/01 4.0 RPCSRC";*/
  43. %static char rcsid[] = "$Id: klm_prot.x,v 1.1 1993/10/08 05:26:51 cgd Exp $";
  44. %#endif /* not lint */
  45. #endif
  46.  
  47. const    LM_MAXSTRLEN = 1024;
  48.  
  49. /*
  50.  * lock manager status returns
  51.  */
  52. enum klm_stats {
  53.     klm_granted = 0,    /* lock is granted */
  54.     klm_denied = 1,        /* lock is denied */
  55.     klm_denied_nolocks = 2, /* no lock entry available */
  56.     klm_working = 3     /* lock is being processed */
  57. };
  58.  
  59. /*
  60.  * lock manager lock identifier
  61.  */
  62. struct klm_lock {
  63.     string server_name<LM_MAXSTRLEN>;
  64.     netobj fh;        /* a counted file handle */
  65.     int pid;        /* holder of the lock */
  66.     unsigned l_offset;    /* beginning offset of the lock */
  67.     unsigned l_len;        /* byte length of the lock;
  68.                  * zero means through end of file */
  69. };
  70.  
  71. /*
  72.  * lock holder identifier
  73.  */
  74. struct klm_holder {
  75.     bool exclusive;        /* FALSE if shared lock */
  76.     int svid;        /* holder of the lock (pid) */
  77.     unsigned l_offset;    /* beginning offset of the lock */
  78.     unsigned l_len;        /* byte length of the lock;
  79.                  * zero means through end of file */
  80. };
  81.  
  82. /*
  83.  * reply to KLM_LOCK / KLM_UNLOCK / KLM_CANCEL
  84.  */
  85. struct klm_stat {
  86.     klm_stats stat;
  87. };
  88.  
  89. /*
  90.  * reply to a KLM_TEST call
  91.  */
  92. union klm_testrply switch (klm_stats stat) {
  93.     case klm_denied:
  94.         struct klm_holder holder;
  95.     default: /* All other cases return no arguments */
  96.         void;
  97. };
  98.  
  99.  
  100. /*
  101.  * arguments to KLM_LOCK
  102.  */
  103. struct klm_lockargs {
  104.     bool block;
  105.     bool exclusive;
  106.     struct klm_lock alock;
  107. };
  108.  
  109. /*
  110.  * arguments to KLM_TEST
  111.  */
  112. struct klm_testargs {
  113.     bool exclusive;
  114.     struct klm_lock alock;
  115. };
  116.  
  117. /*
  118.  * arguments to KLM_UNLOCK
  119.  */
  120. struct klm_unlockargs {
  121.     struct klm_lock alock;
  122. };
  123.  
  124. program KLM_PROG {
  125.     version KLM_VERS {
  126.  
  127.         klm_testrply    KLM_TEST (struct klm_testargs) =    1;
  128.  
  129.         klm_stat    KLM_LOCK (struct klm_lockargs) =    2;
  130.  
  131.         klm_stat    KLM_CANCEL (struct klm_lockargs) =    3;
  132.         /* klm_granted=> the cancel request fails due to lock is already granted */
  133.         /* klm_denied=> the cancel request successfully aborts
  134. lock request  */
  135.  
  136.         klm_stat    KLM_UNLOCK (struct klm_unlockargs) =    4;
  137.     } = 1;
  138. } = 100020;
  139.